package com.battle.service.service.in;

import com.battle.pojo.entity.CaseBaseInfo;
import com.battle.pojo.enums.CaseStatusEnum;
import com.battle.pojo.vo.CityVo;
import nirvana.core.domains.vo.PageResult;
import com.battle.pojo.param.caseBaseInfo.*;
import com.battle.pojo.vo.caseBaseInfo.*;

import java.util.List;


/**
 * 【描 述】：战例服务
 * 【环 境】：J2SE
 * 【详 细】：
 */
public interface CaseBaseInfoService {

    /**
     * 创建战例
     *
     * @param param
     */
    CreateCaseBaseInfoVo createCaseBaseInfo(CreateCaseBaseInfoParam param);

    /**
     * 上传战例
     * @param param
     */
    Long importCaseBaseInfo(ImportCaseBaseInfoParam param);

    /**
     * 修改战例
     *
     * @param param
     */
    Long editCaseBaseInfo(EditCaseBaseInfoParam param);

    /**
     * 撤回战例
     * @param id
     */
    void revocationCase(Long id);

    /**
     * 审批战例
     * @param param
     */
    void approveCase(ApproveCaseParam param);

    /**
     * 移除战例
     *
     * @param id
     */
    void removeCaseBaseInfo(Long id);

    /**
     * 启动/禁用战例
     *
     * @param id
     */
    void enabledCaseBaseInfo(Long id);

    /**
     * 获取战例详情
     *
     * @param id
     * @return
     */
    GetCaseBaseInfoVo getCaseBaseInfo(Long id);

    /**
     * 获取战例列表
     *
     * @param param
     * @return
     */
    PageResult<GetCaseBaseInfoListVo> getCaseBaseInfoList(GetCaseBaseInfoListParam param);

    /**
     * 恢复战例
     * @param id
     */
    void updateCaseDeleted(Long id);

    /**
     * 获取推荐的战例 最新的五个支队级战例
     * @return
     */
    List<CaseHomePageVo> selectRecommendCaseList();

    /**
     * 获取待办审批的战例 最新的待审核的五个战例
     * @return
     */
    List<CaseHomePageVo> selectBacklogCaseList();

    /**
     * 获取战例统计信息
     * @return
     */
    GetCaseBaseInfoQueryVo selectCaseBaseInfo(Integer type);

    /**
     * 获取城市列表
     * @return
     */
    List<CityVo> getCityList();

    /**
     * 获取战例下拉
     * @param param
     * @return
     */
    List<GetCaseBaseInfoDownListVo> getCaseBaseInfoDownList(GetCaseBaseInfoDownListParam param);

    /**
     * 查看审批情况，创建-提交-审批-发布
     * @param id
     * @return
     */
    CaseBaseInfoAuditVo getCaseBaseInfoAudit(Long id);
}